package main

import "fmt"

/**
方法值与方法表达式
*/
func main() {
	per := Person03{"qq", 01}
	per.print()

	/**
	方法值调用,通过对象拿到方法名，拿到方法名后赋值给一个变量
	*/
	f := per.print
	f() //变量加上括号就可以调用
	//测试一个变量的类型
	fmt.Printf("%T", f) //func()

	/**
	方法表达式
		方法中的p指向per这个内存地址来调用
	*/
	h := (*Person03).print
	h(&per) //让方法中的p指向per这个内存地址来调用

}

type Person03 struct {
	name string
	age  int
}

func (p *Person03) print() {
	fmt.Println(*p)
}
